<!DOCTYPE ht ml>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <h1>Hello App!</h1>
      <p>
        <!--使用 router-link 组件进行导航 -->
        <!--通过传递 `to` 来指定链接 -->
        <!--`<router-link>` 将呈现一个带有正确 `href` 属性的 `<a>` 标签-->
        <router-link to="/">Go to Home</router-link>
        <router-link to="/about">Go to About</router-link>
      </p>
      <!-- 路由出口 -->
      <!-- 路由匹配到的组件将渲染在这里 -->
      <router-view></router-view>
    </div>

    <div id="counter">
      <!-- 组件传递参数 -->
      <ol>
        <!-- 创建一个 todo-item 组件实例 -->
        <!-- 这里绑定属性(todo) -->
        <todo-item v-for="todoitem in todos" v-bind:todo="todoitem"></todo-item>
      </ol>
      <ol>
        <li v-for="todo in todos">{{ todo.text }}</li>
      </ol>
      <div v-if="show">我们试一下v-if怎么玩</div>
      <button v-on:click="show = !show">隐藏/出现</button>
      <br />
      <span v-bind:title="message"> Counter: {{ counter }} </span>
      <button v-on:click="plus10">加10</button>
      <br />
      <button v-on:click="changename">改名字</button>

      <!--双向绑定-->
      <p>{{message}}</p>
      <input v-model="message" />
      <br />
      <input v-model="formData.username" />
      <br />
      <input v-model="formData.password" />
      <br />
      <button v-on:click="submit">提交</button>
    </div>

    <script src="https://unpkg.com/vue@next"></script>
    <script src="https://unpkg.com/vue-router@4"></script>

    <!--  在JS中我们实现一个计数器,是主动修改了dom对象,先把dom对象清空,再赋予新值

    <script>
        let num = 0;
        setInterval(() => {
            num++;
            document.getElementById("counter").innerText= "";
            document.getElementById("counter").innerText = "学习VUE:" + num;
        }, 1000)
    </script> 

    -->

    <!-- vue给了我们新的思路：想要改dom,只改dom里的变量即可 数据驱动视图-->
    <script>

      // 1. 定义路由组件.
      // 也可以从其他文件导入
      const Home = { template: "<div>Home</div>" };
      const About = { template: "<div>About</div>" };

      // 2. 定义一些路由
      // 每个路由都需要映射到一个组件。
      //定义的数组route存放所有的路由
      const routes = [
        { path: "/", component: Home },
        { path: "/about", component: About },
      ];

      // 3. 创建路由实例并传递 `routes` 配置
      // 你可以在这里输入更多的配置，但我们在这里
      // 暂时保持简单
      //VueRouter是从引入的idn <script src="https://unpkg.com/vue-router@4">中获取的
      const router = VueRouter.createRouter({
        // 4. 内部提供了 history 模式的实现。为了简单起见，我们在这里使用 hash 模式。
        history: VueRouter.createWebHashHistory(),
        routes, // `routes: routes` 的缩写
      });
      let Root = {
        data() {
          return {}
        }
      }
      //定义一个组件
      const TodoItem = {
        //通过prop接口接受参数，参数从父组件传递
        props: ["todo"],
        template: `<li>{{todo.text}}</li>`,
      };

      const Counter = {
        //加载组件
        components: {
          TodoItem,
        },
        // 数据在这里存放
        data() {
          return {
            counter: 0,
            message: "计数器",
            formData: {
              username: "",
              password: "",
            },
            show: true,
            todos: [{ text: "复现" }, { text: "理解" }, { text: "自己写" }],
          };
        },
        //钩子函数，会在浏览器DOM加载结束后执行
        mounted() {
          setInterval(() => {
            //在数据层面增加数据
            this.counter++;
          }, 1000);
        },
        //属性方法在这里存放, this.来调用
        methods: {
          plus10() {
            this.counter += 10;
          },
          changename() {
            this.message = "jishuqi";
          },
          submit() {
            console.log(this.formData);
          },
        },
      };
      const app = Vue.createApp(Root).use(router);
      const vm = app.mount("#app")
      Vue.createApp(Counter).mount("#counter");
    </script>
  </body>
</html>
